﻿//using Microsoft.EntityFrameworkCore;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Threading;
//using System.Threading.Tasks;
//using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
//using Volo.Abp.EntityFrameworkCore;

//namespace SettingsManagement;

//public class EfCoreSettingsRepository : EfCoreRepository<ISettingsManagementStorage, Setting, Guid>,
//    ISettingsRepository
//{
//    public EfCoreSettingsRepository(IDbContextProvider<ISettingsManagementStorage> dbContextProvider)
//        : base(dbContextProvider)
//    {
//    }

//    public virtual async Task<Setting> FindAsync(
//        string name,
//        string providerName,
//        string providerKey,
//        CancellationToken cancellationToken = default)
//    {
//        return await (await GetDbSetAsync())
//            .OrderBy(x => x.Id)
//            .FirstOrDefaultAsync(
//                s => s.Name == name && s.ProviderName == providerName && s.ProviderKey == providerKey,
//                GetCancellationToken(cancellationToken));
//    }

//    public virtual async Task<List<Setting>> GetListAsync(
//        string providerName,
//        string providerKey,
//        CancellationToken cancellationToken = default)
//    {
//        return await (await GetDbSetAsync())
//            .Where(
//                s => s.ProviderName == providerName && s.ProviderKey == providerKey
//            ).ToListAsync(GetCancellationToken(cancellationToken));
//    }

//    public virtual async Task<List<Setting>> GetListAsync(
//        string[] names,
//        string providerName,
//        string providerKey,
//        CancellationToken cancellationToken = default)
//    {
//        return await (await GetDbSetAsync())
//            .Where(
//                s => names.Contains(s.Name) && s.ProviderName == providerName && s.ProviderKey == providerKey
//            ).ToListAsync(GetCancellationToken(cancellationToken));
//    }
//}
